gusucode.com > VC++ 汽配销售管理系统(Access)源码程序 > VC++ 汽配销售管理系统(Access)源码程序/源码/DCheck.cpp
//Download by http://www.NewXing.com // DCheck.cpp : implementation file // #include "stdafx.h" #include "qpglxt.h" #include "DCheck.h" #include "externDllHeader.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDCheck dialog extern CQpglxtApp theApp; CDCheck::CDCheck(CWnd* pParent /*=NULL*/) : CDialog(CDCheck::IDD, pParent) { //{{AFX_DATA_INIT(CDCheck) //}}AFX_DATA_INIT } void CDCheck::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDCheck) DDX_Control(pDX, IDC_INPUT_STAOP, m_StaOP); DDX_Control(pDX, IDC_INPUT_STAID, m_StaID); DDX_Control(pDX, IDC_INPUT_STADATE, m_StaDate); DDX_Control(pDX, IDC_INPUT_GRID, m_Grid); DDX_Control(pDX, IDC_INPUT_EDTSTORE, m_EdtStore); DDX_Control(pDX, IDC_INPUT_EDTDEAR, m_EdtDear); DDX_Control(pDX, IDC_INPUT_BUTUNDO, m_ButUndo); DDX_Control(pDX, IDC_INPUT_BUTSAVE, m_ButSave); DDX_Control(pDX, IDC_INPUT_BUTPRINT, m_ButPrint); DDX_Control(pDX, IDC_INPUT_BUTEXIT, m_ButExit); DDX_Control(pDX, IDC_INPUT_BUTBOOKIN, m_ButBookin); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDCheck, CDialog) //{{AFX_MSG_MAP(CDCheck) ON_WM_PAINT() ON_BN_CLICKED(IDC_INPUT_BUTBOOKIN, OnInputButbookin) ON_WM_CTLCOLOR() ON_BN_CLICKED(IDC_INPUT_BUTEXIT, OnInputButexit) ON_BN_CLICKED(IDC_INPUT_BUTSAVE, OnInputButsave) ON_BN_CLICKED(IDC_INPUT_BUTUNDO, OnInputButundo) ON_BN_CLICKED(IDC_INPUT_BUTPRINT, OnInputButprint) //}}AFX_MSG_MAP ON_MESSAGE(DIY_SETFOCUS,OnCellSetFocus) ON_MESSAGE(DIY_KILLFOCUS,OnCellKillFocus) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDCheck message handlers void CDCheck::OnOK() { // TODO: Add extra validation here // CDialog::OnOK(); } BOOL CDCheck::OnInitDialog() { CDialog::OnInitDialog(); m_StaDate.SetTextColor(RGB(0,0,0)); m_StaID.SetTextColor(RGB(0,0,0)); m_StaOP.SetTextColor(RGB(0,0,0)); CString sSQL; rst.Open("仓库信息查询"); m_EdtStore.Initialize(this->GetParent()); m_EdtStore.StartUpAssciation=false; m_EdtStore.SetRecordset(rst); m_EdtStore.SetSelectField("名称"); sSQL.Format("SELECT 编号,姓名 FROM 员工信息表"); rst.Open(sSQL,adCmdText); m_EdtDear.Initialize(this->GetParent()); m_EdtDear.SetRecordset(rst); m_EdtDear.SetSelectField("姓名"); CString Fields[]={"配件名称","适用车型","规格","产地","计量单位","库存数量","盘点数量"}; int ColWidth[]={165,90,100,100,70,75,75}; for(int m=0;m<7;m++) { m_Grid.InsertColumn(m,Fields[m]); m_Grid.SetColumnWidth(m,ColWidth[m]); } m_Grid.m_Edit.Initialize(this->GetParent()); this->m_StaOP.SetWindowText(OP); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CDCheck::OnPaint() { CPaintDC dc(this); // device context for painting //根据分辩率画背景 CBitmap bit; CDC memDC; CRect rect; this->GetClientRect(&rect); bit.LoadBitmap(IDB_KCPD); memDC.CreateCompatibleDC(&dc); memDC.SelectObject(&bit); dc.BitBlt(22,23,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY); memDC.DeleteDC(); ::DeleteObject(&bit); // Do not call CDialog::OnPaint() for painting messages } void CDCheck::Clear() { this->m_EdtStore.SetWindowText(""); this->m_Grid.DeleteAllItems(); } void CDCheck::Enabled(bool bEnabled) { this->m_Grid.ReadOnly(bEnabled); this->m_ButBookin.EnableWindow(bEnabled); this->m_ButExit.EnableWindow(bEnabled); this->m_ButPrint.EnableWindow(bEnabled); this->m_ButSave.EnableWindow(!bEnabled); this->m_ButUndo.EnableWindow(!bEnabled); } void CDCheck::OnInputButbookin() { CTime time; CString cTime,NewID; NewID=ado.AutoNumber("盘点信息表","票号","PD",3); NewID=NewID+" "; this->m_StaID.SetWindowText(NewID); time=time.GetCurrentTime(); cTime=CTimeToCString(time); cTime=cTime+" "; this->m_StaDate.SetWindowText(cTime); this->m_EdtStore.SetFocus(); this->Enabled(false); this->Clear(); } HBRUSH CDCheck::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if(pWnd==&this->m_StaDate|| pWnd==&this->m_StaID) { pDC->SetBkColor(RGB(255,255,255)); pDC->SetTextColor(RGB(0,0,0)); } // TODO: Return a different brush if the default is not desired return hbr; } BOOL CDCheck::PreTranslateMessage(MSG* pMsg) { if(pMsg->hwnd==this->m_EdtDear&&pMsg->message==WM_KEYDOWN&&pMsg->wParam==9) { this->m_Grid.InsertItem(0,""); this->m_Grid.SetRow(0); this->m_Grid.SetCol(0); this->m_Grid.BeginEdit(0,0); this->m_Grid.m_Edit.SetFocus(); pMsg->wParam=VK_CONTROL ; } if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE) { pMsg->wParam=VK_CONTROL ; this->OnInputButexit(); } return CDialog::PreTranslateMessage(pMsg); } void CDCheck::OnInputButexit() { CString MsgText; MsgText.Format("确定要退出库存盘点模块吗?"); if(MessageBox(MsgText,"系统提示",MB_OKCANCEL|MB_ICONQUESTION)!=1) return; this->OnCancel(); } void CDCheck::OnCellSetFocus() { CString sSQL, sName,sType,sSpec,sAddr; switch(m_Grid.GetCol()) { case 0: m_Grid.m_Edit.SetReadOnly(false); m_Grid.m_Edit.NumberOnly(false); m_Grid.m_Edit.PopHide=false; m_Grid.m_Edit.EnterNumber=0; m_Grid.m_Edit.ClearAll(); rst.Open("SELECT DISTINCT 名称,简称 from 商品信息表",adCmdText); m_Grid.m_Edit.StartUpAssciation=true; m_Grid.m_Edit.SetRecordset(rst); m_Grid.m_Edit.SetSelectField("名称"); m_Grid.m_Edit.AutoPosition(); break; case 1: m_Grid.m_Edit.SetReadOnly(false); m_Grid.m_Edit.NumberOnly(false); m_Grid.m_Edit.PopHide=false; m_Grid.m_Edit.EnterNumber=0; m_Grid.m_Edit.ClearAll(); sName=m_Grid.GetItemText(m_Grid.GetRow(),0); sSQL.Format("SELECT DISTINCT 名称,适用车型 from 商品信息查询 WHERE 名称='%s'",sName); rst.Open(sSQL,adCmdText); m_Grid.m_Edit.StartUpAssciation=false; m_Grid.m_Edit.SetRecordset(rst); m_Grid.m_Edit.SetSelectField("适用车型"); m_Grid.m_Edit.AutoPosition(); break; case 2: m_Grid.m_Edit.SetReadOnly(false); m_Grid.m_Edit.NumberOnly(false); m_Grid.m_Edit.PopHide=false; m_Grid.m_Edit.EnterNumber=0; m_Grid.m_Edit.ClearAll(); sName=m_Grid.GetItemText(m_Grid.GetRow(),0); sType=m_Grid.GetItemText(m_Grid.GetRow(),1); sSQL.Format("SELECT DISTINCT 名称,规格 from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s'",sName,sType); rst.Open(sSQL,adCmdText); m_Grid.m_Edit.StartUpAssciation=false; m_Grid.m_Edit.SetRecordset(rst); m_Grid.m_Edit.SetSelectField("规格"); m_Grid.m_Edit.AutoPosition(); break; case 3: m_Grid.m_Edit.SetReadOnly(false); m_Grid.m_Edit.NumberOnly(false); m_Grid.m_Edit.PopHide=false; m_Grid.m_Edit.EnterNumber=0; m_Grid.m_Edit.ClearAll(); sName=m_Grid.GetItemText(m_Grid.GetRow(),0); sType=m_Grid.GetItemText(m_Grid.GetRow(),1); sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2); sSQL.Format("SELECT DISTINCT 名称,产地 from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s' AND 规格='%s'",sName,sType,sSpec); rst.Open(sSQL,adCmdText); m_Grid.m_Edit.StartUpAssciation=false; m_Grid.m_Edit.SetRecordset(rst); m_Grid.m_Edit.SetSelectField("产地"); m_Grid.m_Edit.AutoPosition(); break; case 4: m_Grid.m_Edit.SetReadOnly(false); m_Grid.m_Edit.NumberOnly(false); m_Grid.m_Edit.PopHide=false; m_Grid.m_Edit.EnterNumber=0; m_Grid.m_Edit.ClearAll(); sName=m_Grid.GetItemText(m_Grid.GetRow(),0); sType=m_Grid.GetItemText(m_Grid.GetRow(),1); sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2); sAddr=m_Grid.GetItemText(m_Grid.GetRow(),3); sSQL.Format("SELECT DISTINCT 名称,计量单位 from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s' AND 规格='%s' AND 产地='%s'",sName,sType,sSpec,sAddr); rst.Open(sSQL,adCmdText); m_Grid.m_Edit.StartUpAssciation=false; m_Grid.m_Edit.SetRecordset(rst); m_Grid.m_Edit.SetSelectField("计量单位"); m_Grid.m_Edit.AutoPosition(); break; case 5: m_Grid.m_Edit.PopHide=true; m_Grid.m_Edit.NumberOnly(true); m_Grid.m_Edit.SetReadOnly(true); m_Grid.m_Edit.HideGrid(); break; case 6: m_Grid.m_Edit.PopHide=true; m_Grid.m_Edit.NumberOnly(true); m_Grid.m_Edit.SetReadOnly(false); m_Grid.m_Edit.HideGrid(); } } void CDCheck::OnCellKillFocus() { CString sSQL,sID,sName,sType,sSpec,sAddr,sNumber,Store,StoreID; this->m_EdtStore.GetWindowText(Store); StoreID=ado.FieldToOtherField("仓库信息表","名称",Store,"编号",1); if(m_Grid.GetCol()==4) { sName=m_Grid.GetItemText(m_Grid.GetRow(),0); sType=m_Grid.GetItemText(m_Grid.GetRow(),1); sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2); sAddr=m_Grid.GetItemText(m_Grid.GetRow(),3); sSQL.Format("SELECT * from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s' AND 规格='%s' AND 产地='%s'",sName,sType,sSpec,sAddr); rst.Open(sSQL,adCmdText); sID=rst.GetFieldValue("编号"); sSQL.Format("SELECT* FROM 库存信息表 WHERE 商品编号='%s' AND 仓库=%s",sID,StoreID); rst.Open(sSQL,adCmdText); if(rst.GetRecordCount()>0) sNumber=rst.GetFieldValue("库存数量"); else sNumber="0"; m_Grid.SetItemText(m_Grid.GetRow(),5,sNumber); } if(m_Grid.GetCol()==5) { sNumber=m_Grid.GetItemText(m_Grid.GetRow(),5); if(sNumber.IsEmpty()) { sName=m_Grid.GetItemText(m_Grid.GetRow(),0); sType=m_Grid.GetItemText(m_Grid.GetRow(),1); sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2); sAddr=m_Grid.GetItemText(m_Grid.GetRow(),3); sSQL.Format("SELECT * from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s' AND 规格='%s' AND 产地='%s'",sName,sType,sSpec,sAddr); rst.Open(sSQL,adCmdText); sID=rst.GetFieldValue("编号"); sSQL.Format("SELECT* FROM 库存信息表 WHERE 商品编号='%s' AND 仓库=%s",sID,StoreID); rst.Open(sSQL,adCmdText); sNumber=rst.GetFieldValue("库存数量"); m_Grid.SetItemText(m_Grid.GetRow(),6,sNumber); } else { m_Grid.SetItemText(m_Grid.GetRow(),6,sNumber); } } } void CDCheck::OnInputButsave() { if(MessageBox("确定要保存此盘点单吗?","系统提示",MB_OKCANCEL|MB_ICONQUESTION)!=1) return; CString sSQL,sID,sDate,sStore,sStoreID,sDear,sDearID,sOPID; m_StaID.GetWindowText(sID); sID.TrimRight(); m_StaDate.GetWindowText(sDate); sDate.TrimRight(); m_EdtDear.GetWindowText(sDear); sDearID=ado.FieldToOtherField("员工信息表","姓名",sDear,"编号",1); m_EdtStore.GetWindowText(sStore); sStoreID=ado.FieldToOtherField("仓库信息表","名称",sStore,"编号",1); sOPID=ado.FieldToOtherField("操作员信息表","用户名",OP,"编号",1); CString sName,sSpec,sAddr,sType,sWareID,sNumber,sCheckNumber; for(int i=0;i<m_Grid.GetItemCount()-1;i++) { sName=m_Grid.GetItemText(i,0); sType=m_Grid.GetItemText(i,1); sSpec=m_Grid.GetItemText(i,2); sAddr=m_Grid.GetItemText(i,3); sNumber=m_Grid.GetItemText(i,5); sCheckNumber=m_Grid.GetItemText(i,6); sSQL.Format("SELECT * FROM 商品信息表 WHERE 名称='%s'AND 适用车型='%s'AND 规格='%s' AND 产地='%s' ",sName,sType,sSpec,sAddr); rst.Open(sSQL,adCmdText); sWareID=rst.GetFieldValue("编号"); //添入盘点信息表 sSQL.Format("Insert into 盘点信息表 Values ('%s',#%s#,%s,'%s',%s,%s,%s,%s)",sID,sDate,sStoreID,sWareID,sNumber,sCheckNumber,sOPID,sDearID); rst.Open(sSQL,adCmdText); //更改库存信息 sSQL.Format("SELECT * FROM 库存信息表 WHERE 仓库=%s AND 商品编号='%s'",sCheckNumber,sStoreID,sWareID); rst.Open(sSQL,adCmdText); if(rst.GetRecordCount()<1) sSQL.Format("Insert Into 库存信息表 Values('%s',%s,%s)",sWareID,sStoreID,sCheckNumber); else sSQL.Format("UpDate 库存信息表 Set 库存数量=%s WHERE 仓库=%s AND 商品编号='%s'",sCheckNumber,sStoreID,sWareID); rst.Open(sSQL,adCmdText); } this->Enabled(true); this->m_ButPrint.SetFocus(); } void CDCheck::OnInputButundo() { if(MessageBox("确定要撤消操作吗?","系统提示",MB_OKCANCEL|MB_ICONQUESTION)!=1) return; this->Enabled(true); this->m_ButBookin.SetFocus(); } void CDCheck::OnInputButprint() { CString sID,sDate,sName,sStore,sDear; RxRecordset brst; brst.Open("系统设置表"); sName=brst.GetFieldValue("公司名称"); this->m_StaID.GetWindowText(sID); this->m_StaDate.GetWindowText(sDate); this->m_EdtStore.GetWindowText(sStore); this->m_EdtDear.GetWindowText(sDear); m_ps.MainCaptionFontSize=400; m_ps.DeckCaptionFontSize=180; sName=sName+"库存盘点单"; m_ps.MainCaption=sName; m_ps.DeckCaptionNumber=3; m_ps.DeckCaptions[0]="盘点编号:"+sID; m_ps.DeckCaptions[1]="盘点日期:"+sDate; m_ps.DeckCaptions[2]="盘点仓库:"+sStore; m_ps.TotalNumber=1; m_ps.Totals[0]="经手人:"+sDear; m_ps.Grid=&m_Grid; theApp.Print(); }